// 引入库
import axios from 'axios'

import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router'
const service = axios.create({
  // 这里用到到是环境变量
  // 脚手架默认会在
  // 运行dev时将根目录 .env.development 里面的变量注入到 process.env 环境变量中
  // 如果运行 build 则是注入 .env.production
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

// request interceptor

// 请求拦截器
service.interceptors.request.use(config => {
  console.log(config.url)
  if (!localStorage.getItem('token') && config.url !== '/auth/local') {
    store.dispatch('user/logOut')
    router.push('/login')
    return Promise.reject(new Error('登录失效,请重新登录'))
  }
  if (store.getters.token) {
    config.headers.Authorization = `Bearer ${store.getters.token}`
  }
  return config
})

// 响应拦截器
service.interceptors.response.use(res => {
  // console.log(res)
  const { statusText } = res
  if (statusText) {
    return res
  }
}, err => {
  // console.log(err)
  Message.error(err.message)
  return Promise.reject(err)
})
// 暴露实例
export default service
